/**
 * n => 3 行
 * m => 4 列
 * **/
function vortex(n, m) {
  const arr = new Array(n).fill(0).map((o) => new Array(m).fill(0));
  let i = 0; // 行索引
  let j = 0; // 列索引
  let count = 1; // 填充的值
  // 步长
  let stepI = 0;
  let stepJ = 1;

  function isBlock() {
    return !arr[i + stepI] || arr[i + stepI][j + stepJ] !== 0;
  }

  while (true) {
    arr[i][j] = count++;
    // 需要判断是否要拐弯
    if (isBlock()) {
      let temp = stepI;
      stepI = stepJ;
      stepJ = -temp;
    }
    // 判断拐弯后,是否在需要拐弯
    if (isBlock()) break;
    // 计算出 i,j 的位置
    i += stepI;
    j += stepJ;
  }

  return arr;
}

console.log(vortex(5, 6));
